class MyPage extends BaseList {
    constructor(action, orderby, flag, $pagesize, $pagination, cokiePageSize, cokiePageIndex, cokieListResult, listUrl, delUrl) {
        super(action, orderby, flag, $pagesize, $pagination, cokiePageSize, cokiePageIndex, cokieListResult, listUrl, delUrl);
        this.selectedItemList = {};  // 选定的数据列表
    }
    SetCriterion(item) {
        item['CurrentUserId'] = parseInt($("#UserId").val());       // 当前操作者，用于过滤供应商分组
        item['WorkFlowId'] = parseInt($("#WorkFlowId").val());      // 工作流程ID
        item['IsSearchWnd'] = 0;                                    // 指示当前为一览画面
        item['PoNoFilterValue'] = formatNullInputValue($.trim($("#PoNoFilterValue").val()));
        item['SupplierNameFilterValue'] = formatNullInputValue($.trim($("#SupplierNameFilterValue").val()));
        item['StyleNoFilterValue'] = formatNullInputValue($.trim($("#StyleNoFilterValue").val()));
        item['PurchasedByNameFilterValue'] = formatNullInputValue($.trim($("#PurchasedByNameFilterValue").val()));
        item['CheckedStatus'] = parseInt($("#CheckedStatus").val()) === -1 ? null : parseInt($("#CheckedStatus").val());
        if ($("#RoleName").val().indexOf("系统管理员") !== 0) {
            item['OperatedBy'] = parseInt($("#UserId").val());
        }
        return item;
    }
    GetFilter(pageIndex) {
        let item = super.GetFilter(pageIndex);
        // 设置条件
        item = this.SetCriterion(item);

        return JSON.stringify(item);
    }
    FetchAll() {
        $("#PoNoFilterValue").val("");
        $("#SupplierNameFilterValue").val("");
        $("#StyleNoFilterValue").val("");
        $("#PurchasedByNameFilterValue").val("");
        $("#CheckedStatus").val("-1");
        this.$pagination.attr("_msh_page", 1);
        this.FetchForPage(1);
    }
    EmptyTableContent() {
        $("#tabData01 tbody").empty();
        $("#tabData02 tbody").empty();
        this.$pagination.attr("_msh_page", 1);
    }
    SetTableContent(result) {
        $("#tabData01 tbody").empty();
        $("#tabData02 tbody").empty();
        let content_01 = '';
        let content_02 = '';
        for (let i = 0; i < result.length; i++) {
            let id = result[i].headerId;
            content_01 += '<tr _mash_id="' + id + '">';
            // 如果已经审核，则不显示审核选择框 
            if ((parseInt(result[i].unCheckFlag) !== 0) || (parseInt(result[i].nextTaskPrivileges) !== 0)) {
                content_01 += '<td style="padding-left:10px;"><label class="btn" for="R-' + result[i].headerId + '"><input id="R-' + result[i].headerId + '" name="_check_row" type="checkbox" onclick="_Instance.DoCheckRow($(this),\'_check_row\', $(\'#CheckAll\'));" value="' + result[i].headerId + '"/><i></i><span></span></label></td>';
            } else {
                content_01 += '<td></td>';
            }
            content_01 += '<td class="column__action"><span title="编辑" class="edit" onclick="_Instance.DoEdit($(this))"><i class="fa-all fa-pencil fa-1"></i></span></td>';
            if (result[i].checkedBy !== null) {  // 已审核，不能删除
                content_01 += '<td></td>';
            } else {
                if ($("#ActionAcl_4").length === 0 || parseInt($("#ActionAcl_4").val() === 0)) {  // 无删除权限
                    content_01 += '<td></td>';
                } else {
                    // 只有作成者和管理员才有编辑权限
                    if ((parseInt($("#UserId").val()) === result[i].purchasedBy) || ($("#RoleName").val().indexOf("系统管理员") !== -1)) {
                        if (result[i].quotedFlag === false) {
                            content_01 += '<td class="column__action"><span title="删除" class="trash" onclick="_Instance.DoDelete($(this));"><i class="fa-all fa-trash-o fa-1"></i></span></td>';
                        } else {
                            content_01 += '<td></td>';
                        }
                    } else {
                        content_01 += '<td></td>';
                    }
                }
            }
            content_01 += '<td>' + formatNullData(result[i].poNo) + '</td>';                      // 合同号
            content_01 += '<td style="text-overflow:ellipsis;" title="' + formatNullData(result[i].styleNo) + '">' + formatNullData(result[i].styleNo) + '</td>';  // 订单款号
            content_01 += '<td style="text-align:center;">' + result[i].billTypeName + '</td>';   // 合同类型
            content_01 += '<td>' + formatNullData(result[i].signedDate) + '</td>';   // 
            content_01 += '<td>' + formatNullData(result[i].orderArrivalDate) + '</td>';   // 
            if (parseInt(result[i].checkedStatus) === 1) {
                // 最终审核
                content_01 += '<td style="text-align:center;"><span class="c1"><span></td>';
            } else {
                // 有审核人则是审核中的状态，否则未审核状态
                if (result[i].checkedBy === null) {
                    content_01 += '<td style="text-align:center;"><span class="c2"><span></td>';
                } else {
                    content_01 += '<td style="text-align:center;"><span class="c3"><span></td>';
                }
            }
            if (result[i].printFlag !== null) {
                content_01 += '<td style="text-align:center;"><span class="c1"><span></td>';
            } else {
                content_01 += '<td style="text-align:center;"><span class="c2"><span></td>';
            }
            content_01 += '</tr>';

            content_02 += '<tr>';
            content_02 += '<td>' + formatNullData(result[i].purchasedByName) + '</td>';              // 采购担当
            content_02 += '<td>' + formatNullData(result[i].supplierName) + '</td>';                 // 供应商名称
            content_02 += '<td>' + formatNullData(result[i].address) + '</td>';                      // 供应商地址
            content_02 += '<td style="text-overflow:ellipsis;" title="' + formatNullData(result[i].performedPlace) + '">' + formatNullData(result[i].performedPlace) + '</td>';       // 合同履行地
            content_02 += '<td style="text-overflow:ellipsis;">' + formatNullData(result[i].quantityOfLimited) + '</td>';   // 数量许可
            content_02 += '<td>' + formatNullData(result[i].gramWeight) + '</td>';                   // 克重
            content_02 += '<td style="text-overflow:ellipsis;" title="' + formatNullData(result[i].termsOfPayment) + '">' + formatNullData(result[i].termsOfPayment) + '</td>';       // 付款条件
            content_02 += '<td style="text-align:center;">' + formatNullData(result[i].currencyName) + '</td>';             // 货币类型
            //content_02 += '<td style="text-overflow:ellipsis;" title="' + formatNullData(result[i].qualityStandard) + '">' + formatNullData(result[i].qualityStandard) + '</td>';     // 品质要求
            content_02 += '<td>' + formatNullData(result[i].updatedByName) + '</td>';                // 操作员
            content_02 += '<td>' + formatNullData(result[i].updatedDate) + '</td>';                  // 操作日期            
            content_02 += '<td style="border-right:none; text-overflow:ellipsis;" title="' + formatNullData(result[i].description) + '">' + formatNullData(result[i].description) + '</td>';        // 备注
            content_02 += '</tr>';

            $("#tabData01 tbody").append(content_01);
            $("#tabData02 tbody").append(content_02);
            content_01 = '';
            content_02 = '';
        }
        setTwoTableRowColor("tabData01", "tabData02");
        this.ResetSelectRowStatus();
    }
    DoInsert() {
        super.DoInsert();
        location.assign(parent.basePath + '/purchase/po/1/0/edit.html');
    }
    DoEdit($self) {
        super.DoEdit();
        // 设置当前检索后的数据列表标识数组
        let _arrayResultList = new Array();
        $("#tabData01 tbody tr").each(function (index) {
            _arrayResultList.push($(this).attr("_mash_id"));
        });
        $.cookie(this.cokieListResult, _arrayResultList.join(","));
        location.assign(parent.basePath + '/purchase/po/2/' + $self.parent().parent().attr("_mash_id") + '/edit.html');
    }
    DoDelete($self) {
        let _params = super.GetFilter(this.$pagination.attr("_msh_page"));
        // 设置条件
        _params = this.SetCriterion(_params);
        _params['HeaderId'] = $self.parent().parent().attr("_mash_id");
        _params['DeletedBy'] = $("#UserId").val();
        _params['DeletedPoNo'] = $self.parent().parent().find("td").eq(3).text();

        super.DoDelete(_params, function (_this, data) {
            if (data.Success === true) {
                _this.BuildDataTable(data);
            } else {
                _this.EmptyTableContent();
            }
            ShowSuccessMessagePanel("删除成功。");
        });
    }
    // 批量审核,首先得到要审核的订单，然后保存到cookie后跳转到审核用画面
    DoCheck() {
        if (Object.keys(this.selectedItemList).length > 0) {
            let _arrayResultList = new Array();
            for (let key in this.selectedItemList) {
                let item = this.selectedItemList[key];
                _arrayResultList.push(parseInt(item["poId"]));
            }
            // 设置当前页
            $.cookie("po_header_list_pageindex", parseInt($("abbr.page_indicator_block,#wrapper_navbar").attr("_msh_page")));
            // 保存过滤条件
            this.SaveFilters();
            // 设置要审核的的定单标识数组
            $.cookie("po_check_list_result", _arrayResultList.join(","));
            window.location.assign(parent.basePath + '/purchase/po/check.html');
        } else {
            ShowErrorMessagePanel("请选择要审核的采购订单。");
        }
    }
    // 设置行选择后的状态
    SetRowStatus($self) {
        super.AdjustRowStatus($self, ($row, index) => {
            let key = $self.val();
            let item = {};
            $('#tabData02 tbody tr:eq(' + index + ')').addClass("row__selected");
            // 设置 编辑、删除按钮失效
            $row.children('td').eq(1).children('span').eq(0).attr("onclick", "");
            $row.children('td').eq(2).children('span').eq(0).attr("onclick", "");
            // 为翻页选择做准备
            item["poId"] = key;
            this.selectedItemList[key] = item;
        }, ($row, index) => {
            let key = $self.val();
            $('#tabData02 tbody tr:eq(' + index + ')').removeClass("row__selected");
            // 设置 编辑、删除按钮有效
            let _event_edit_onclick = '_Instance.DoEdit($(this))';
            let _event_delete_onclick = '_Instance.DoDelete($(this))';
            $row.children('td').eq(1).children('span').eq(0).attr("onclick", _event_edit_onclick);
            $row.children('td').eq(2).children('span').eq(0).attr("onclick", _event_delete_onclick);
            delete this.selectedItemList[key];
        });
    }
    // 每次翻页都恢复选定结果
    ResetSelectRowStatus() {
        let _this = this;
        $("#tabData01 tbody").find("tr").each(function (index) {
            let key = $(this).attr("_mash_id");
            if (_this.selectedItemList[key] !== undefined) {
                $(this).children("td").eq(0).children("label").eq(0).children("input[type='checkbox'][name='_check_row']").eq(0).prop('checked', true);
                $(this).addClass("row__selected");
                $('#tabData02 tbody tr:eq(' + index + ')').addClass("row__selected");
            }
        });
    }
    SaveFilters() {
        let _filters = new Array();
        _filters.push($("#PoNoFilterValue").val());
        _filters.push($("#SupplierNameFilterValue").val());
        _filters.push($("#StyleNoFilterValue").val());
        _filters.push($("#PurchasedByNameFilterValue").val());
        _filters.push($("#CheckedStatus").val());
        $.cookie("po_header_list_fiters", _filters.join(","));
    }
    RestoreFilters() {
        if ($.cookie("po_header_list_fiters") !== undefined) {
            let _filters = $.cookie("po_header_list_fiters").split(',');
            $("#PoNoFilterValue").val(_filters[0]);
            $("#SupplierNameFilterValue").val(_filters[1]);
            $("#StyleNoFilterValue").val(_filters[2]);
            $("#PurchasedByNameFilterValue").val(_filters[3]);
            $("#CheckedStatus").val(_filters[3]);
        } else {
            $("#PoNoFilterValue").val("");
            $("#SupplierNameFilterValue").val("");
            $("#StyleNoFilterValue").val("");
            $("#PurchasedByNameFilterValue").val("");
            $("#CheckedStatus").val("-1");
        }
    }
    ScrollTo() {
        $('#divH2').scrollLeft($('#divD2').scrollLeft());
        $('#divD1').scrollTop($('#divD2').scrollTop());
    }
}

//-----------------------------------------------------------------------------
// 定义实例
//-----------------------------------------------------------------------------
let _Instance = null;

//-----------------------------------------------------------------------------
// 页面初始化
//-----------------------------------------------------------------------------
function onPageReady() {
    let flag = jQuery.url.param("flag") === undefined ? 0 : jQuery.url.param("flag");
    // 默认初始化每页显示15条数据
    $("#page-size").val($.cookie("po_header_list_pagesize") === undefined ? 15 : $.cookie("po_header_list_pagesize"));
    // 删除已经保存的检索后的数据列表标识数组
    $.cookie("po_list_result", null);

    _Instance = new MyPage(0, null, flag,
            $("#page-size"),
            $("abbr.page_indicator_block,#wrapper__navbar"),
            "po_header_list_pagesize",
            "po_header_list_pageindex",
            "po_list_result",
            "/purchase/po/header/fetchForPage.html",
            "/purchase/po/header/delete.html");

    //设置分页控制 （操作区域）
    $("#wrapper__navbar").swPagination({
        link_string: '/?page={page_number}',
        max_page: null,
        paged: function (page) {
            $("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page", page);
            _Instance.FetchForPage(page);
        }
    });
    /*
     // 设置表格排序字段
     $("#tabHeader01").wxTableSorter({
     sortList: [[4, 1]], // 第一个表示列的序号，第二个表示排序种类
     headers: {4: {sorter: false}},
     columnList: [[1, "H.DateOfContract"]],
     detailList: $("#tabData01"),
     sort: sortTable
     });
     */

    _Instance.OnPageLoad();
}

// 画面大小或者位置移动
function onPageResize() {
    let wLeftList = 818;
    let w = $(window).width();

    $("#divH2").css({left: 0, width: w - 16 - wLeftList});
    $("#divD2").css({left: -1, width: w - 15 - wLeftList});
}